<HTML><HEAD><TITLE>library(eplex)</TITLE></HEAD><BODY>
[ <A HREF="../../index.html">Reference Manual</A> | <A HREF="../../fullindex.html">Alphabetic Index</A> ]<H1>library(eplex)</H1>
Interface to external Simplex or MIP solvers
<H2>Predicates</H2>
<BLOCKQUOTE>
<DL>
<DT><A HREF="SNN-2.html"><STRONG>EplexInstance: (?Vars $:: ++Lo..Hi)</STRONG></A></DT>
<DD>Constrains list elements to lie between the given bounds.</DD>
<DT><A HREF="SE-2.html"><STRONG>EplexInstance:(?X $= ?Y)</STRONG></A></DT>
<DD>Constrains X to be equal to Y.</DD>
<DT><A HREF="SEL-2.html"><STRONG>EplexInstance:(?X $=< ?Y)</STRONG></A></DT>
<DD>Constrains X to be less than or equal to Y.</DD>
<DT><A HREF="SGE-2.html"><STRONG>EplexInstance:(?X $>= ?Y)</STRONG></A></DT>
<DD>Constrains X to be greater than or equal to Y.</DD>
<DT><A HREF="NN-2.html"><STRONG>EplexInstance: (?Vars :: ++Lo..Hi)</STRONG></A></DT>
<DD>Constrains list elements to lie between the given bounds.</DD>
<DT><A HREF="ENE-2.html"><STRONG>EplexInstance:(?X =:= ?Y)</STRONG></A></DT>
<DD>Constrains X to be equal to Y.</DD>
<DT><A HREF="EL-2.html"><STRONG>EplexInstance:(?X =< ?Y)</STRONG></A></DT>
<DD>Constrains X to be less than or equal to Y.</DD>
<DT><A HREF="GE-2.html"><STRONG>EplexInstance:(?X >= ?Y)</STRONG></A></DT>
<DD>Constrains X to be greater than or equal to Y.</DD>
<DT><A HREF="eplex_add_constraints-2.html"><STRONG>EplexInstance: eplex_add_constraints(+Constraints,+Integers)</STRONG></A></DT>
<DD>Add new constraints to the eplex instance EplexInstance, possibly triggering it.</DD>
<DT><A HREF="eplex_cleanup-0.html"><STRONG>EplexInstance:eplex_cleanup</STRONG></A></DT>
<DD>Destroy the external solver associated with EplexInstance.</DD>
<DT><A HREF="eplex_get-2.html"><STRONG>EplexInstance:eplex_get(++ParamName, -Value)</STRONG></A></DT>
<DD>Retrieve information about solver state and results for eplex instance EplexInstance.</DD>
<DT><A HREF="eplex_get_iis-4.html"><STRONG>EplexInstance:eplex_get_iis(-NumConstraints, -NumVars, -ConstraintIdxs, -VarInfos)</STRONG></A></DT>
<DD>Returns an IIS for an infeasible problem associated with EplexInstance.</DD>
<DT><A HREF="eplex_instance-1.html"><STRONG>eplex_instance(++EplexInstance)</STRONG></A></DT>
<DD>Initialises the eplex instance EplexInstance.</DD>
<DT><A HREF="eplex_probe-2.html"><STRONG>EplexInstance:eplex_probe(+Probes, -Cost)</STRONG></A></DT>
<DD>Invoke EplexInstance's external solver, probing the problem temporarily modified by the probe specifications.</DD>
<DT><A HREF="eplex_read-2.html"><STRONG>EplexInstance:eplex_read(++Format,++File)</STRONG></A></DT>
<DD>Read a problem from a file into eplex instance EplexInstance.</DD>
<DT><A HREF="eplex_set-2.html"><STRONG>EplexInstance:eplex_set(++ParamName, -Value)</STRONG></A></DT>
<DD>Change initial options for solver state associated with EplexInstance</DD>
<DT><A HREF="eplex_solve-1.html"><STRONG>EplexInstance:eplex_solve(-Cost)</STRONG></A></DT>
<DD>Explicitly invoke the external solver associated with EplexInstance.</DD>
<DT><A HREF="eplex_solver_setup-1.html"><STRONG>EplexInstance:eplex_solver_setup(+Objective)</STRONG></A></DT>
<DD>Setup an external solver state for eplex instance EplexInstance</DD>
<DT><A HREF="eplex_solver_setup-4.html"><STRONG>EplexInstance:eplex_solver_setup(+Objective, ?Cost, ++ListOfOptions, +TriggerModes)</STRONG></A></DT>
<DD>Setup an external solver state for eplex instance EplexInstance</DD>
<DT><A HREF="eplex_var_get-3.html"><STRONG>EplexInstance:eplex_var_get(+Var, ++What, -Value)</STRONG></A></DT>
<DD>Obtain information for an individual solver problem variable Var.</DD>
<DT><A HREF="eplex_var_get_bounds-3.html"><STRONG>EplexInstance: eplex_var_get_bounds(+Var, -Lo, -Hi)</STRONG></A></DT>
<DD>Returns the bounds stored in the solver state for Var in eplex instance EplexInstance.</DD>
<DT><A HREF="eplex_verify_solution-2.html"><STRONG>EplexInstance:eplex_verify_solution(-ViolatedCstrs,-ViolatedVars)</STRONG></A></DT>
<DD>Verifies the current solution for the problem associated with EplexInstance.</DD>
<DT><A HREF="eplex_write-2.html"><STRONG>EplexInstance:eplex_write(++Format,++File)</STRONG></A></DT>
<DD>Write the problem in the solver for eplex instance  EplexInstance to a file.</DD>
<DT><A HREF="get_changeable_value-2.html"><STRONG>EplexInstance:get_changeable_value(?Var, -Val)</STRONG></A></DT>
<DD>Interface predicate to access the <EM>changeable</EM> value for this variable.</DD>
<DT><A HREF="instantiation_deviates-1.html"><STRONG>instantiation_deviates(+Handle)</STRONG></A></DT>
<DD>A trigger goal for lp_demon_setup/5.</DD>
<DT><A HREF="integers-1.html"><STRONG>EplexInstance:integers(?Vars)</STRONG></A></DT>
<DD>Constrains Vars to integers for eplex instance EplexInstance.</DD>
<DT><A HREF="lp_add-3.html"><STRONG>lp_add(+Handle, +NewNormCons, +NewIntegers)</STRONG></A></DT>
<DD>Add new constraints to a solver state Handle.</DD>
<DT><A HREF="lp_add_columns-2.html"><STRONG>lp_add_columns(+Handle, +Columns)</STRONG></A></DT>
<DD>Add new variables as columns to the external solver's matrix.</DD>
<DT><A HREF="lp_add_constraints-3.html"><STRONG>lp_add_constraints(+Handle, +Constraints, ++Integers)</STRONG></A></DT>
<DD>Add new constraints to the solver Handle, possibly triggering it.</DD>
<DT><A HREF="lp_add_constraints-4.html"><STRONG>lp_add_constraints(+Handle, +Constraints, ++Integers, -Indices)</STRONG></A></DT>
<DD>Add new expandable constraints to the demon solver Handle.</DD>
<DT><A HREF="lp_add_cutpool_constraints-4.html"><STRONG>lp_add_cutpool_constraints(+Handle, +Constraints, +Options, -Indices)</STRONG></A></DT>
<DD>Add constraints to the cutpool associated  with solver state Handle.</DD>
<DT><A HREF="lp_add_vars-2.html"><STRONG>lp_add_vars(+Handle, +Vars)</STRONG></A></DT>
<DD>Declare Vars to be problem variables for the solver state Handle</DD>
<DT><A HREF="lp_cleanup-1.html"><STRONG>lp_cleanup(+Handle)</STRONG></A></DT>
<DD>Destroy the specified solver Handle and clean up.</DD>
<DT><A HREF="lp_demon_setup-5.html"><STRONG>lp_demon_setup(+Objective, ?Cost, ++ListOfOptions, ++TriggerModes, -Handle)</STRONG></A></DT>
<DD>Setup the external solver as a simplex demon.</DD>
<DT><A HREF="lp_get-2.html"><STRONG>lp_get(++ParamName, ?Value)</STRONG></A></DT>
<DD>Obtain the value of a global parameter.</DD>
<DT><A HREF="lp_get-3.html"><STRONG>lp_get(+Handle, ++ParamName, -Value)</STRONG></A></DT>
<DD>Retrieve information about solver state and results for solver state Handle.</DD>
<DT><A HREF="lp_get_changeable_value-3.html"><STRONG>lp_get_changeable_value(+Handle, ?Var, -Val)</STRONG></A></DT>
<DD>Interface predicate to access the <EM>changeable</EM> value for this variable.</DD>
<DT><A HREF="lp_get_iis-5.html"><STRONG>lp_get_iis(+Handle, -NumConstraints, -NumVars, -ConstraintIdxs, -VarInfos)</STRONG></A></DT>
<DD>Returns an IIS for an infeasible problem.</DD>
<DT><A HREF="lp_get_license-0.html"><STRONG>lp_get_license</STRONG></A></DT>
<DD>Get a runtime license token for the external solver.</DD>
<DT><A HREF="lp_get_license-2.html"><STRONG>lp_get_license(+LicStr, +LicNum)</STRONG></A></DT>
<DD>Get a runtime license token for the external solver.</DD>
<DT><A HREF="lp_get_license_challenge-1.html"><STRONG>lp_get_license_challenge(-Challenge)</STRONG></A></DT>
<DD>Get parameter for computing license key (some external solvers only)</DD>
<DT><A HREF="lp_probe-3.html"><STRONG>lp_probe(+Handle, +Probes, -Cost)</STRONG></A></DT>
<DD>Invoke external solver, probing the problem temporarily modified by the probe specifications.</DD>
<DT><A HREF="lp_read-3.html"><STRONG>lp_read(+File, ++Format, -Handle)</STRONG></A></DT>
<DD>Read a problem from a file and setup a solver for it.</DD>
<DT><A HREF="lp_release_license-0.html"><STRONG>lp_release_license</STRONG></A></DT>
<DD>Release a runtime license token for the external solver.</DD>
<DT><A HREF="lp_set-2.html"><STRONG>lp_set(++ParamName, ++Value)</STRONG></A></DT>
<DD>Set a global parameter for the external solver.</DD>
<DT><A HREF="lp_set-3.html"><STRONG>lp_set(+Handle, ++What, +Value)</STRONG></A></DT>
<DD>Change initial options for solver state Handle.</DD>
<DT><A HREF="lp_setup-4.html"><STRONG>lp_setup(+NormConstraints, +Objective, ++ListOfOptions, -Handle)</STRONG></A></DT>
<DD>Create a new external solver state for the constraints NormConstraints.</DD>
<DT><A HREF="lp_solve-2.html"><STRONG>lp_solve(+Handle, -Cost)</STRONG></A></DT>
<DD>Explicitly invoke the external solver.</DD>
<DT><A HREF="lp_suspend_on_change-3.html"><STRONG>lp_suspend_on_change(+Handle, ?Var, +Susp)</STRONG></A></DT>
<DD>Record the given suspension to be scheduled whenever a solution is found for the Eplex handle.</DD>
<DT><A HREF="lp_var_get-4.html"><STRONG>lp_var_get(+Handle, +Var, ++What, -Value)</STRONG></A></DT>
<DD>Obtain information for an individual solver problem variable Var.</DD>
<DT><A HREF="lp_var_get_bounds-4.html"><STRONG>lp_var_get_bounds(+Handle, ?Var, -Lo, -Hi)</STRONG></A></DT>
<DD>Returns the bounds stored in the solver state of Handle for Var.</DD>
<DT><A HREF="lp_var_occurrence-3.html"><STRONG>lp_var_occurrence(?Var, ?Handle, -Index)</STRONG></A></DT>
<DD>Returns the column number Index for Var in the external solver represented by Handle</DD>
<DT><A HREF="lp_var_set_bounds-4.html"><STRONG>lp_var_set_bounds(+Handle, ?Var, +Lo, +Hi)</STRONG></A></DT>
<DD>Imposes new bounds for Var on the solver state of Handle.</DD>
<DT><A HREF="lp_verify_solution-3.html"><STRONG>lp_verify_solution(+Handle, -ViolatedCstrs, -ViolatedVars)</STRONG></A></DT>
<DD>Verifies the current solution for the problem associated with Handle.</DD>
<DT><A HREF="lp_write-3.html"><STRONG>lp_write(+Handle, ++Format, +File)</STRONG></A></DT>
<DD>Write a solver problem to a file.</DD>
<DT><A HREF="normalise_cstrs-3.html"><STRONG>normalise_cstrs(+Constraints, -NormConstraints, -NonlinConstraints)</STRONG></A></DT>
<DD>Normalise the linear constraints in Constraints.</DD>
<DT><A HREF="piecewise_linear_hull-3.html"><STRONG>EplexInstance:piecewise_linear_hull(?X, ++Points, ?Y)</STRONG></A></DT>
<DD>Relates X and Y according to a piecewise linear function.</DD>
<DT><A HREF="reals-1.html"><STRONG>EplexInstance:reals(?Vars)</STRONG></A></DT>
<DD>Constraints Vars to the real domain for EplexInstance.</DD>
<DT><A HREF="reduced_cost_pruning-2.html"><STRONG>reduced_cost_pruning(+Handle, ?GlobalCost)</STRONG></A></DT>
<DD>Prune bounds of all problem variables based on their reduced costs</DD>
<DT><A HREF="solution_out_of_range-1.html"><STRONG>solution_out_of_range(+Handle)</STRONG></A></DT>
<DD>A trigger goal for lp_demon_setup/5.</DD>
<DT><A HREF="suspend_on_change-2.html"><STRONG>EplexInstance:suspend_on_change(?Var, +Susp)</STRONG></A></DT>
<DD>Record the given suspension to be scheduled whenever a solution is found for the EplexInstance.</DD>
</DL>
</BLOCKQUOTE>
<H2>Description</H2>
<P>
   This library lets you use an external Mathematical Programming  solver 
   from within ECLiPSe. This is done either directly to the solver, like
   CPLEX or XPRESS-MP, or indirectly via COIN-OR project's Open Solver
   Interface (OSI), which provides a common and open API for several solvers.
   Specifically, this allow COIN-OR's own open source solvers like CLP and 
   For the commercial solvers, the library provides just the interface, 
   and does not include the solver or any required licence to use them.
</P><P>
    The constraints provided are:
    <DL>
    <DT>X =:= Y</DT><DD>equality over linear expressions</DD>
    <DT>X &gt;= Y</DT><DD>inequality over linear expressions</DD>
    <DT>X =&lt; Y</DT><DD>inequality over linear expressions</DD>
    <DT>X $= Y</DT><DD>equality over linear expressions</DD>
    <DT>X $&gt;= Y</DT><DD>inequality over linear expressions</DD>
    <DT>X $=&lt; Y</DT><DD>inequality over linear expressions</DD>
    <DT>integers(Xs)</DT><DD>integrality of variables</DD>
    <DT>Vs :: Bound</DT><DD>Bounds on variables</DD>
    <DT>Vs $:: Bound</DT><DD>Bounds on variables</DD>
    </DL>
    Their operational behaviour is as follows:
</P><UL>
    <LI>When they contain no variables, they simply succeed or fail.

    <LI>When they contain exactly one variable, they are translated into a
    bound update on that variable for the external solver instance. This
    can lead to immediate failure if the lower bound is greater than the upper.

    <LI>Otherwise, the constraint is transferred to the external solver
    instance immediately.
</UL><P>
The following arithmetic expression can be used inside the constraints:
<DL>
<DT><STRONG><B>X</B></STRONG>
<DD>Variables. If X is not yet a problem variable for the external solver
    instance, it  is turned into one via an implicit declaration 
    <TT>X :: -inf..inf</TT>.

<P>
<DT><STRONG><B>123, 3.4</B></STRONG>
<DD>Integer or floating point constants.

<P>
<DT><STRONG><B>+</B>Expr</STRONG>
<DD>Identity.

<P>
<DT><STRONG><B>-</B>Expr</STRONG>
<DD>Sign change.

<P>
<DT><STRONG>E1<B>+</B>E2</STRONG>
<DD>Addition.

<P>
<DT><STRONG><B>sum</B>(ListOfExpr)</STRONG>
<DD>Equivalent to the sum of all list elements.

<P>
<DT><STRONG>E1<B>-</B>E2</STRONG>
<DD>Subtraction.

<P>
<DT><STRONG>E1<B>*</B>E2</STRONG>
<DD>Multiplication.

<P>
<DT><STRONG>ListOfExpr1<B>*</B>ListOfExpr2</STRONG>
<DD>Scalar product: The sum of the products of the corresponding
elements in the two lists.  The lists must be of equal length.
</DL>
</P><P>
The external solver can either be explicitly invoked to solve the
problem represented by the constraints, or be invoked in response to
certain trigger conditions. This mechanism makes it possible to tailor
the solving behaviour for a particular application's needs.
</P>

<H2>About</H2><UL COMPACT>
<LI><STRONG>Author: </STRONG>Joachim Schimpf and Kish Shen
<LI><STRONG>Copyright &copy; </STRONG>Cisco Systems, Inc.
<LI><STRONG>Date: </STRONG>$Date: 2009/02/19 05:45:20 $
</UL>
<HR>Generated from eplex.eci on 2009-05-27 01:25
</BODY></HTML>
